// components/like/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
  // 也可以被花括号绑定,属性是一个对象，不像在data中定义的时候；指定3个属性的特性type：Number，String,Boolean,Array,Object,Null;value:属性的初始默认值选填(不填的话就是type的默认值)，observe：function(){}选填
     like:{
       type:Boolean
     },
     count:{
       type:Number
     }   

  },

  /**
   * 组件的初始数据(组件内部的)
   */
  data: {
    //数据绑定count的变化,三元表达式实现like与dislike图片的切换,组件可以封装，提高代码的复用性，
    //封装在内部，开放性：从组件的外部设置这些数据需要写在组件的属性中
    //组件的粒度：简单的功能和复杂功能的封装
    yesSrc:'images/like.png',
    noSrc:'images/like@dis.png'
  },

  /**
   * 组件的方法列表
   */
  methods: {
    //通过this来访问properties中的属性
    onLike:function(event){
      //var定义的变量存在于全局或者整个函数块中；let定义的变量仅仅被限制在块级中，语句或者表达式中，标准用let
      //自定义事件
      let like = this.properties.like
      let count = this.properties.count

      count = like?count-1:count+1
       //通过this.setDat更新绑定在wxml中的变量的数值的值，setData接受js中的一个对象
      this.setData({
        count:count,
        like:!like
        })
      console.log(event)
      // //激活一个事件triggerEvent通过this来调用，接收三个参数，一个字符串(自定义事件名称)和两个javascript对象，第一个对象一般传递自定义的属性behavior，设置event的detail属性
      let behavior = this.properties.like?'like':'cancel'
      this.triggerEvent('like',{
        behavior:behavior
      },{})
    }
  }
})
